package com.until.controller;

import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @author AdminUser
 */
public interface InController<T,Return,IdParma,Pagination> {
    /**
     * @implNote 得到单条记录的相关方法
     * <br/> 得到单条记录的方法，当调用此方法的时候，建议去调用 getSelectUntil() 方法进行数据判断，详情信息请查看 getSelectUntil() 方法的
     * 注释文件
     * @param id 得到id
     * @return 返回得到的单条记录
     */
    Return get(@PathVariable(value = "id") IdParma id) throws Exception;

    /**
     * @implNote  返回得到的记录
     * <br/> 得到全部信息,支持分页处理的操作,但是需要在方法内调用 PageHelper.startPage(page.getPageInfoRequest().getPageNumber(), page.getPageInfoRequest().getPageSize());
     * 方法进行初始化操作,然后调用 查询 select 所有的方法
     * @param page 预处理的参数
     * @return 返回得到的记录
     */
    Return all(@ModelAttribute Pagination page) throws Exception;

    /**
     * @implNote  新建记录
     * @param page 预处理的参数
     * @return 返回得到的记录
     */
    Return add(@ModelAttribute Pagination page) throws Exception;

    /**
     * @implNote 返回修改的记录的返回值信息
     * @param page 预处理的参数
     * @return 返回得到的记录
     */
    Return update(@ModelAttribute Pagination page) throws Exception;

    /**
     * @implNote 返回是否删除的记录信息
     * @param page 预处理的参数
     * @return 返回得到的记录
     */
    Return delete(@ModelAttribute Pagination page) throws Exception;
}
